[小ネタ] Go言語のAWS SAMアプリケーションでAmazon Linux 2023カスタムランタイムを使おうとしてちょっとだけハマった話
小ネタです。
先日LambdaでAmazon Linux 2023ベースのカスタムランタイムがサポートされたのを受け、私の手持ちのGo言語SAMアプリケーションのランタイムを更新することにしました。
対象アプリケーションについてはこちらの記事をご覧ください。
Go 1.x
ランタイムのサポート終了に備えAmazon Linux 2022ベースのカスタムランタイムに切り替え済みのアプリケーションです。
ハマったポイント
SAM CLIでAmazon Linux 2023ベースのカスタムランタイム(provided.al2023
)をサポートするのはVer.1.101.0以降となります。
最初にSAM CLIのバージョンをVer.1.101.0に上げ、template.yaml
のランタイム指定をprovided.al2
からprovided.al2023
に更新するだけで作業は終わりです。
diff --git a/template.yaml b/template.yaml
index 91043f6..c25afb2 100644
--- a/template.yaml
+++ b/template.yaml
@@ -22,7 +22,7 @@ Resources:
FunctionName: cloudwatch-ojichat-widget
CodeUri: function/
Handler: bootstrap
- Runtime: provided.al2
+ Runtime: provided.al2023
Architectures: [arm64]
Tracing: PassThrough
Metadata:
あとはsam build
してやるだけですが
Error: GoModulesBuilder:Validation - Runtime provided023 is not supported
という割と謎なメッセージと共にエラーになってしまいました。
原因と対応策
原因を調査してみたところSAM CLIの不具合であることが分かりました。
template.yaml
に記載されたランタイム名からaws-lambda-buildersに引き渡す情報を解析する処理がAmazon Linux 2023環境に対応できなかったため「provided023
というランタイムは無い」旨のエラーとなっています。
ちょうど本日この不具合を修正したVer.1.102.0がリリースされたのでバージョンアップしてやれば解消できます。
SAM CLIのバージョンアップ後は下図のとおりsam build
が正常終了します。
あとは動作確認してデプロイしてやればOKです。
最後に
以上となります。
ちょっとした不具合でしたが丁度良い?タイミングで遭遇したのでブログにしてみました。
Go言語のSAMアプリケーションの場合はSAM CLI Ver.1.101.0ではなくVer.102.0から実用可能な点だけ覚えて頂ければ幸いです。